package main

import "fmt"

func printArray(myArray [6]int) {
	for index, value := range myArray {
		fmt.Println("index = ", index, "value = ", value)
	}
	myArray[0] = 1231232 //没用，所以这个方法不适合开发
}

func printArray2(myArray []int) {
	for index, value := range myArray {
		fmt.Println("index = ", index, "value = ", value)
	}
	myArray[0] = 1231232 //可以改
}
func main() {
	//固定数组
	var myArray1 [10]int
	myArray2 := [6]int{1, 23, 14, 4}
	for i := range myArray1 {
		fmt.Println(myArray1[i])
	}

	for index, value := range myArray2 {
		fmt.Println("index = ", index, "value = ", value)
	}

	printArray(myArray2)

	fmt.Println("---------------------------------------------")
	//切片slice 动态数组
	myArray := []int{1, 2, 3, 4}
	printArray2(myArray)
	for _, value := range myArray {
		fmt.Println("value = ", value)
	}

	//var slice1 []int
	//fmt.Println("创建slice数组 ", slice1)

	//slice1 = make([]int,3) //开辟3个空间，默认值是0
	//slice1[0]=100 //赋值

	var slice1 = make([]int, 1, 5) //开辟3个空间，容量为5   len=3,cap=5

	fmt.Println(slice1)
	slice1 = append(slice1, 1) //追加数据，容量不会改变
	slice1 = append(slice1, 1) //追加数据，容量不会改变
	slice1 = append(slice1, 1) //追加数据，容量不会改变
	//如果没容量了，就会新开辟一个空间，大小cap+5
	fmt.Println(slice1)

	fmt.Println("------------------------------------------")
	//切片截取

	s := []int{1, 2, 3} //len=3,cap=3
	//截取前两个，截取方式有很多，这个就百度 "切片截取"
	s1 := s[0:2]

	s1[0] = 100
	fmt.Println(s) //s1 和 s 指向的地址一样，所以第一个数改为了100
	fmt.Println(s1)

	//copy 可以将底层数组的slice一起进行拷贝
	s2 := make([]int, 3)
	//将s中的值，依次拷贝到s2
	copy(s2, s)
	fmt.Println(s2)

}
